"""
宿舍内务计算
宿舍内务根据难度分为几个等级，每完成一项任务就可以累计对应等级的分数。等级和分数对应关系如下：
1级：擦桌子、椅子、窗户 - 对应1分
2级：扫地、拖地 - 对应2分
3级：扫厕所 - 对应3分
4级：帮全宿舍打饭 - 对应4分
5级：帮全宿舍签到 - 对应5分

编写一个Python程序，先读取“宿舍老大的内务记录.txt”文件，获取所有已填写的信息（字典格式），文件不存在则创建空字典用于记录
然后让用户输入自己完成的宿舍内务任务和完成次数。
将信息存储到字典中，以：{任务: 次数} 的格式存储，如果任务已经存在则累加次数，如果任务不存在则添加新的任务。
将任务记录更新到 “宿舍老大的内务记录.txt” 文件中，统计并显示用户总共完成每项任务的次数和总分。
程序结束

编程思路提示：
实现步骤：try方式读取文件 - eval转换为字典 - 接收用户输入 - 更新字典次数 - 计算分数 - str方式转换字典为字符串 - 保存到文件
使用with open来操作文件。
读取文件时，将字符串转换回字典，用 eval 函数。
写入文件前，将字典转换为字符串，用 str 函数。
任务和分数的对应字典用：
    task_scores = {'擦桌子': 1, '擦椅子': 1, '擦窗户': 1, '扫地': 2, '拖地': 2, '扫厕所': 3, '帮全宿舍打饭': 4, '帮全宿舍签到': 5}
"""


task_scores = {'擦桌子': 1, '擦椅子': 1, '擦窗户': 1, '扫地': 2, '拖地': 2, '扫厕所': 3, '帮全宿舍打饭': 4, '帮全宿舍签到': 5}

def main():
    try:
        # 尝试读取文件，如果文件不存在则会引发异常
        with open("宿舍老大的内务记录.txt", 'r') as file:
            content = file.read()
            if content:
                records = eval(content)  # 将读取的字符串转换为字典
            else:
                records = {}  # 如果文件为空，创建空字典
    except FileNotFoundError:
        records = {}  # 文件不存在时创建空字典用于记录

    while True:
        task = input("请输入完成的宿舍内务任务（结束输入请按q）：")
        if task == 'q':
            break
        times = int(input("请输入完成该项任务的次数："))

        if task in records:
            records[task] += times
        else:
            records[task] = times

    total_score = 0
    print("各项任务完成次数统计：")
    for task, times in records.items():
        print(f"{task}：{times}次")
        if task in task_scores:
            total_score += task_scores[task] * times

    print(f"总分：{total_score}分")

    with open("宿舍老大的内务记录.txt", 'w') as file:
        file.write(str(records))

if __name__ == '__main__':
    main()